package com.wangcanxuan.www.controller;

import com.wangcanxuan.www.annotation.exception.ExceptionHandler;
import com.wangcanxuan.www.entity.dto.ResultInfo;

import com.wangcanxuan.www.entity.po.Role;
import com.wangcanxuan.www.entity.po.User;

/**
 * 用户界面的Controller层实现类
 *
 * @author HHLJ
 * @date 2022/03/28
 */
public interface UserController {
    /**
     * 返回用户登录后的结果信息
     *
     * @param userName 用户名
     * @param password 密码
     * @return {@link ResultInfo}<{@link User}>
     */
    @ExceptionHandler
    ResultInfo<User> login(String userName, String password);

    /**
     * 返回用户注册后的结果信息
     *
     * @param user 用户
     * @return {@link ResultInfo}<{@link ?}>
     */
    @ExceptionHandler
    ResultInfo<String> register(User user);

    /**
     * 返回获得用户的职位的结果信息
     *
     * @param userId 用户id
     * @return {@link ResultInfo}<{@link Role}>
     */
    @ExceptionHandler
    ResultInfo<Role> getUserRole(String userId);

    /**
     * 返回每日签到功能结果信息
     *
     * @param id id
     * @return {@link ResultInfo}<{@link ?}>
     */
    @ExceptionHandler
    ResultInfo<User> signIn(String id);

    /**
     * 返回刷新当前用户的结果信息
     *
     * @param id id
     * @return {@link ResultInfo}<{@link User}>
     */
    @ExceptionHandler
    ResultInfo<User> refresh(String id);

    /**
     * 返回更新用户信息的结果信息
     *
     * @param user 用户
     * @return {@link ResultInfo}<{@link ?}>
     */
    @ExceptionHandler
    ResultInfo<String> updateUserMessage(User user);


    /**
     * 返回找到密码的结果信息
     *
     * @param user 用户
     * @return {@link ResultInfo}<{@link ?}>
     */
    @ExceptionHandler
    ResultInfo<String> findPassword(User user);
}
